@@ -17,7 +17,13 @@ module AgentControllerConcern |
||
17 | 17 |
|
18 | 18 |
def validate_control_action |
19 | 19 |
case control_action |
20 |
- when 'run', 'enable', 'disable' |
|
20 |
+ when 'run' |
|
21 |
+ control_targets.each { |target| |
|
22 |
+ if target.cannot_be_scheduled? |
|
23 |
+ errors.add(:base, "#{target.name} cannot be scheduled") |
|
24 |
+ end |
|
25 |
+ } |
|
26 |
+ when 'enable', 'disable' |
|
21 | 27 |
else |
22 | 28 |
errors.add(:base, 'invalid action') |
23 | 29 |
end |
@@ -78,6 +78,20 @@ describe Agents::SchedulerAgent do |
||
78 | 78 |
@agent.control_action.should == action |
79 | 79 |
} |
80 | 80 |
end |
81 |
+ |
|
82 |
+ it "cannot be 'run' if any of the control targets cannot be scheduled" do |
|
83 |
+ @agent.control_action.should == 'run' |
|
84 |
+ @agent.control_targets = [agents(:bob_rain_notifier_agent)] |
|
85 |
+ @agent.should_not be_valid |
|
86 |
+ end |
|
87 |
+ |
|
88 |
+ it "can be 'enable' or 'disable' no matter if control targets can be scheduled or not" do |
|
89 |
+ ['enable', 'disable'].each { |action| |
|
90 |
+ @agent.options['action'] = action |
|
91 |
+ @agent.control_targets = [agents(:bob_rain_notifier_agent)] |
|
92 |
+ @agent.should be_valid |
|
93 |
+ } |
|
94 |
+ end |
|
81 | 95 |
end |
82 | 96 |
|
83 | 97 |
describe "save" do |